﻿using System;

namespace LoRel
{

    public class IndexKey : Key {
        public IndexKey( NullReport null_report, params IComparable[] values ) : base( null_report, values ) {}
    }

    public class UniqueKey : SubsetKey
    {
        public UniqueKey(NullReport report, params IComparable[] values) : base(report, values) { }
        public UniqueKey(params Key[] keys ) : base( keys ) {}
    }

    public class SubsetKey : Key, IComparable<SubsetKey> {
        public SubsetKey( NullReport report, params IComparable[] values ) : base(report, values ) { }
        public SubsetKey( params Key[] keys ) : base( keys ) { }

        public int CompareTo( SubsetKey other ) { return base.CompareTo( other ); }

        public bool Equals(SubsetKey other)
        {
            return base.Equals( ( Key ) other );
        }

    }

    public delegate void SubsetKeyAddedHandler(SubsetKey unique_key);
    public delegate void UniqueKeyAddedHandler(UniqueKey unique_key);
}
